package com.ilink.groundservice.service.AiX;


import com.baomidou.mybatisplus.core.metadata.IPage;
import com.ilink.groundservice.entity.VO.AiX.AiXScenePhaseOpusResponse;
import com.ilink.groundservice.entity.VO.AiX.AiXScenePhaseSectionDTO;
import com.ilink.groundservice.entity.VO.AiX.AiXScenePhaseTaskDTO;
import com.ilink.groundservice.entity.VO.AiX.AiXSceneResponse;
import com.ilink.groundservice.entity.VO.AiX.AiXSceneSubPhaseOpusResponse;
import com.ilink.ilinkapi.dto.ground.AiX.AiXAreaFilterRequest;
import com.ilink.ilinkapi.dto.ground.AiX.AiXPhaseOpusInsertRequest;
import com.ilink.ilinkapi.dto.ground.AiX.AiXPhaseOpusScoreRequest;
import com.ilink.ilinkapi.dto.ground.AiX.AiXScenePhaseOpusGroundRequest;
import com.ilink.ilinkapi.dto.ground.AiX.AiXSubPhaseOpusInsertRequest;
import com.ilink.ilinkapi.dto.ground.AiX.AiXSubPhaseOpusScoreRequest;
import com.ilink.ilinkcommon.domain.R;
import java.util.List;

public interface AiXOpusService {
    
    AiXScenePhaseOpusResponse getPhaseOpus(Long phaseId, Long beginEndId, String userId);

    R submitPhaseOpus(AiXPhaseOpusInsertRequest request, String userId);

    R deletePhaseOpus(Long phaseId, Long beginEndId, String userId);

    AiXSceneSubPhaseOpusResponse getSubPhaseOpus(Long subPhaseId, Long beginEndId, String userId);

    R submitSubPhaseOpus(AiXSubPhaseOpusInsertRequest request, String userId);

    R deleteSubPhaseOpus(Long subPhaseId, Long beginEndId, String userId);

    List<AiXScenePhaseOpusResponse> getAllPhaseOpus(Long phaseId, Long beginEndId);

    List<AiXSceneSubPhaseOpusResponse> getAllSubPhaseOpus(Long subPhaseId, Long beginEndId);

    R scorePhaseOpus(AiXPhaseOpusScoreRequest request);

    R scoreSubPhaseOpus(AiXSubPhaseOpusScoreRequest request);

    IPage<AiXScenePhaseOpusResponse> getOpusGround(AiXAreaFilterRequest request);

    IPage<AiXScenePhaseOpusResponse> getOpusGroundForAuthor(AiXScenePhaseOpusGroundRequest request);

    List<String> getAuthorTags(String userId);

    List<AiXScenePhaseSectionDTO> getCourseSections(Long sceneId);

    List<AiXScenePhaseTaskDTO> getCourseTasks(Long phaseId);

    IPage<AiXSceneResponse> getCourses(AiXAreaFilterRequest request, String userId);
}
